package main

import (
	"context"
	"fmt"
	"github.com/go-kit/kit/transport/http"
	"go-kit/demo8/Endpoint"
	Transport2 "go-kit/demo8/Transpoint"
	"net/url"
	"os"
)

//挂起一个HTTP 服务 并把请求 传递给service 层
func main() {

	//设置URL
	tgt, _ := url.Parse("http://127.0.0.1:8080")

	//创建一个直连client，这里我们必须写两个func,一个是如何请求,一个是响应我们怎么处理
	client := http.NewClient("GET", tgt, Transport2.GetUserInfoRequest, Transport2.GetUserInfoResponse)

	//通过这个拿到定义在服务端的 endpoint 也就是上面代码段的 return 出来的函数，直接在本地调就可以调用服务端的代码
	getUserInfo := client.Endpoint()

	//创建一个上下文
	ctx := context.Background()

	//执行
	res, err := getUserInfo(ctx, Endpoint.UserRequest{Uid: 101}) //使用 go-kit 插件来直接调用服务

	if err != nil {

		fmt.Println(err)

		os.Exit(1)
	}

	userinfo := res.(Endpoint.UserResponse)

	fmt.Println(userinfo.Result)

}
